Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tentative support for primary-system-name. #9

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open

Tentative support for primary-system-name. #9

wants to merge 2 commits into from

Conversation

fare
Copy link

@fare fare commented Jan 5, 2014

OK, new tentative patch for #7
that supersedes #8

There was an infinite loop because I was calling normalize-dependency on dependencies before the system definition was properly initialized. That was bad. This version accumulates dependencies, then normalizes at the end. Should work better. Once, again, untested (except this time I checked that it compiles.)

@fare
Copy link
Author

fare commented Jan 5, 2014

If you explain me how to test, I can do the testing of my own patch.

Software that use / in explicit secondary systems will work just as well in ASDF2 as software that use names without / as a secondary system, except they won't confuse ASDF as much as to where to find the system if it hasn't been defined yet, for ASDF3 will know where to look.

LIL can't work with ASDF 2.26 or older; it relies on the package-system extension, that requires ASDF 3 (I briefly tried to make asdf-package-system work with ASDF 2 as well as 3, but it was too much work for still incomplete compatibility, because ASDF 2 is so broken).

As a comment in #8 you say:

"The slashed system magic breaks the system installation database of Quicklisp."

"Fixing it isn't just a matter of making the current client work. It must be made easy to go back to previous versions of the client and previous versions of ASDF to make sure that previous software dists remain loadable."

"That represents a few days of thinking and new work. I'd rather not get it as an untested patch from an outside source."

How is the slashed system magic breaking the database? Do you mean, you want a list of all secondary systems being defined in a .asd file, and not just the primary one? Or you need the system granularity to avoid circularities that appear if each system name is replaced by its primary-system-name?

Then indeed, you must record the names of all secondary systems, and teach quicklisp-client about the fact that it should look things up by primary-system-name, which implies it using ASDF3. :-/

@quicklisp
Copy link
Owner

This seems to result in a dist that goes into an infinite loop when computing the load strategy for lil.

@fare
Copy link
Author

fare commented Jan 9, 2014

What I feared. In this case, where the circularity is all within a same primary system name, so the controller can probably omit the self-reference with a (remove current-primary-name ...). Where there would be mutual dependencies across primary-names, the client would have to know to detect and break circularities.

@quicklisp
Copy link
Owner

There's something more fundamentally wrong with these changes. It's reporting the wrong dependency relationships for e.g. anaphora, where the deps for anaphora-test are ending up as dependencies for anaphora. I'm not sure why.

@fare
Copy link
Author

fare commented Jan 11, 2014

Interesting. anaphora-test is a secondary system defined in anaphora.asd.

It looks like the fact that the defsystem hook uses setf direct-dependencies means that the last system in the file gets to set the dependencies for all systems in the file, which is a bug. I refactored that hook, but I'm surprised that the refactoring should change this part of the behavior. Maybe the solution is to store the information in a hash-table indexed by coerce-name instead of a simple variable?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants